From f3837f3a610d37a1238638a3e2fd2d250fb2a29c Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 17 May 2010 11:05:21 +0100 Subject: [PATCH] intel_txt: to fix intel txt S3 resume failure since c/s 21108 This patch is to fix S3 resume failure with Intel TXT/tboot launched, brought by c/s 21108. Don't printk anything between two tboot_gen_xenheap_integrity() calls for release build or debug build. Or else xen heap will be changed, which causes that memory integrity will be lost on S3 resume. Signed-off-by: Shane Wang --- xen/arch/x86/tboot.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c index 4a0a171a42..9cbed0b09f 100644 --- a/xen/arch/x86/tboot.c +++ b/xen/arch/x86/tboot.c @@ -230,8 +230,6 @@ static void tboot_gen_domain_integrity(const uint8_t key[TB_KEY_SIZE], *mac = vmac(NULL, 0, nonce, NULL, &ctx); - printk("MAC for domains is: 0x%08"PRIx64"\n", *mac); - /* wipe ctx to ensure key is not left in memory */ memset(&ctx, 0, sizeof(ctx)); } @@ -294,8 +292,6 @@ static void tboot_gen_xenheap_integrity(const uint8_t key[TB_KEY_SIZE], } *mac = vmac(NULL, 0, nonce, NULL, &ctx); - printk("MAC for xenheap is: 0x%08"PRIx64"\n", *mac); - /* wipe ctx to ensure key is not left in memory */ memset(&ctx, 0, sizeof(ctx)); } @@ -325,8 +321,6 @@ static void tboot_gen_frametable_integrity(const uint8_t key[TB_KEY_SIZE], *mac = vmac(NULL, 0, nonce, NULL, &ctx); - printk("MAC for frametable is: 0x%08"PRIx64"\n", *mac); - /* wipe ctx to ensure key is not left in memory */ memset(&ctx, 0, sizeof(ctx)); } @@ -505,14 +499,20 @@ int tboot_s3_resume(void) /* need to do these in reverse order of shutdown */ tboot_gen_xenheap_integrity(g_tboot_shared->s3_key, &mac); + printk("MAC for xenheap before S3 is: 0x%08"PRIx64"\n", xenheap_mac); + printk("MAC for xenheap after S3 is: 0x%08"PRIx64"\n", mac); if ( mac != xenheap_mac ) return -1; tboot_gen_frametable_integrity(g_tboot_shared->s3_key, &mac); + printk("MAC for frametable before S3 is: 0x%08"PRIx64"\n", frametable_mac); + printk("MAC for frametable after S3 is: 0x%08"PRIx64"\n", mac); if ( mac != frametable_mac ) return -2; tboot_gen_domain_integrity(g_tboot_shared->s3_key, &mac); + printk("MAC for domains before S3 is: 0x%08"PRIx64"\n", domain_mac); + printk("MAC for domains after S3 is: 0x%08"PRIx64"\n", mac); if ( mac != domain_mac ) return -3; -- 2.30.2